const arr = [
	{ id: '29', pid: '', name: '总裁办' },
	{ id: '2c', pid: '', name: '财务部' },
	{ id: '2d', pid: '2c', name: '财务核算部' },
  { id: '2a', pid: '2d', name: '会计部' },
	{ id: '2f', pid: '2c', name: '薪资管理部' },
	{ id: 'd2', pid: '', name: '技术部' },
	{ id: 'd3', pid: 'd2', name: 'Java研发部' }
]

// const arr = [
// 	{ id: '29', pid: '', name: '总裁办' },
// 	{
// 		id: '2c',
// 		pid: '',
// 		name: '财务部',
// 		children: [
//       { id: '2d', pid: '2c', name: '财务核算部' },
//       { id: '2f', pid: '2c', name: '薪资管理部' }
//     ]
// 	},

// 	{
// 		id: 'd2',
// 		pid: '',
// 		name: '技术部',
// 		children: [ { id: 'd3', pid: 'd2', name: 'Java研发部' } ]
// 	}
// ]

function todo2(arr, pid='') {
	var newArr = []
	arr.forEach((item) => {
		// 查找一级根据传进来pid和每一项的pid
		if (item.pid === pid) {
			// 1- 还需要往一级里面追加子children
			var children = todo2(arr, item.id)
			if (children) {
        // 判断二级有不有
				item.children = children
			}
			//2- 将一级存到返回的数组中
			newArr.push(item)
		}
	})
	return newArr
}

console.log(todo2(arr,''))
